<?php

App::import('Validation');

class Usuario extends AppModel {
	var $name='Usuario';

	var $hasMany = array(
				'Perdido' => array(
						'className' => 'Perdido',
						'conditions' => '',
						'limit' => '',
						'foreignKey' => 'usuario_id',
						'dependent' => false,
						'finderQuery' => ''
				),
				'Encontrado' => array(
						'className' => 'Encontrado',
						'conditions' => '',
						'limit' => '',
						'foreignKey' => 'usuario_id',
						'dependent' => false,
						'finderQuery' => ''
				),
				'Recuperado' => array(
						'className' => 'Recuperado',
						'conditions' => '',
						'limit' => '',
						'foreignKey' => 'usuario_id',
						'dependent' => false,
						'finderQuery' => ''
				)
		);

	var $validate = array(
		'username' => array(
			'unique' => array(
				'rule' => 'isUnique',
				'message' => 'Este nombre de usuario ya fue utilizado.'
			),
			'type' => array(
				'rule' => 'alphaNumeric',
				'message' => 'Debe ser alfanumerico'
			),
			'long' => array(
				'rule' => array('between', 4, 30),
				'message' => 'Debe tener entre 4 y 30 caracteres'
			),
			'notempty' => array(
				'rule' => 'notEmpty',
				'message' => 'No puede ser vacio'
			)
		),
		'nombre' => array(
			'type' => array(
				'rule' => 'alphaNumeric',
				'message' => 'Debe ser alfanumerico'
			),
			'long' => array(
				'rule' => array('between', 4, 30),
				'message' => 'Debe tener entre 4 y 30 caracteres'
			),
			'notempty' => array(
				'rule' => 'notEmpty',
				'message' => 'No puede ser vacio'
			)
		),
		'apellido' => array(
			'type' => array(
				'rule' => 'alphaNumeric',
				'message' => 'Debe ser alfanumerico'
			),
			'long' => array(
				'rule' => array('between', 4, 30),
				'message' => 'Debe tener entre 4 y 30 caracteres'
			),
			'notempty' => array(
				'rule' => 'notEmpty',
				'message' => 'No puede ser vacio'
			)
		),
		'email' => array(
			'unique' => array(
				'rule' => 'isUnique',
				'on' => 'create',
				'message' => 'Este email ya fue utilizado.'
			),
			'confirm' => array(
				'rule' => 'confirmEmail',
				'message' => 'Los emails no coinciden'
			),
			'type' => array(
				'rule' =>'email',
				'message' => 'Entre una direccion de email valida',
			),
			'notEmpty' => array(
				'rule' => 'notEmpty',
				'message' => 'Debe ingresar un email'
			)
		),
		'password' => array(
			'long' => array(
				'rule' => array('minLength', '8'),
				'message' => 'EL password debe tener un minimo 8 caracteres de longitud'
			),
			'confirm' => array(
				'rule' => 'confirmPass',
				'message' => 'Los Passwords no inciden'
			),
			'notEmpty' => array(
				'rule' => 'notEmpty',
				'message' => 'No puede ser vacio'
			)
		)
	);

//---------------------------------------------------------------------------
//	VALIDATION FUNCTIONS
//---------------------------------------------------------------------------

	function confirmPass()
	{
		if(!isset($this->data['Usuario']['pass_confirm']) || empty($this->data['Usuario']['pass_confirm'])){
			return false;
		}elseif ($this->data['Usuario']['pass_confirm'] == $this->data['Usuario']['password']){
			return true;
		}else{
			return false;
		}
	}

	function confirmEmail()
	{
		if(!isset($this->data['Usuario']['email_confirm']) || empty($this->data['Usuario']['email_confirm'])){
			return false;
		}else{
			return ($this->data['Usuario']['email_confirm'] == $this->data['Usuario']['email']);
		}
	}

//---------------------------------------------------------------------------
//	ADD/REMOVE FUNCTIONS
//---------------------------------------------------------------------------

	function add ($data)
	{
		if(($data['Usuario']['password']!='')&&(strlen($data['Usuario']['password'])>=8)){
			$data['Usuario']['password'] = md5($data['Usuario']['password']);
		}

		if(($data['Usuario']['pass_confirm']!='')&&(strlen($data['Usuario']['pass_confirm'])>=8)){
			$data['Usuario']['pass_confirm'] = md5($data['Usuario']['pass_confirm']);
		}

		if (isset($data['Usuario']['id']) || !empty($data['Usuario']['id'])){
			$this->id = $data['Usuario']['id'];
			unset($data['Usuario']['id']);
		}else{
			$data['Usuario']['localidad_id'] = $data['Usuario']['ciudad'];
			$data['Usuario']['created'] = date('Y-m-d H:i:s');
			$data['Usuario']['type'] = 1;
			$data['Usuario']['blocked'] = 0;
		}
		return $this->save($data);
	}

	function del ($id)
	{
		if( Validation::uuid($id))
		{
			$condition = " = '{$id}'";
			return $this->deleteAll(array('Usuario.id'=>$id), true);
		}else{
			return false;
		}
	}

//---------------------------------------------------------------------------
//	MISC FUNCTIONS
//---------------------------------------------------------------------------

	function exist ($user, $id)
	{
		if( Validation::uuid($id))
		{
			$condition['Usuario.id']=$id;
		}else{
			return false;
		}
		$exist= $this->find('first',array('conditions'=>$condition, 'fields'=>array('Usuario.*')));
		return ($exist)?$exist:false;
	}

}

?>
